Fragmentation of files due to host fragmentation or storage module fragmentation can degrade system performance. With host fragmentation, files are scattered across many non-consecutive logical block address (LBA) ranges of the storage module. So, the more LBA ranges are used to store a file, the more fragmented the file becomes. Further, in some file systems, such as EXT4, the file allocation table (FAT) is mixed with stored data. Reading a fragmented file in such a system requires more operations, as the structure of the file is more complicated. This can degrade read performance.
With storage module fragmentation, files are scattered among many physical blocks in memory. The more physical blocks that are allocated for the same file, the more fragmented the file is. Because a fragmented file often does not occupy the entire physical block, a physical block that stores part of a fragmented file will often store data of other files. So, when a host deletes a file that is fragmented over several physical blocks, this may result in fewer free blocks than intended, as the blocks still hold data for other files. Because such a file deletion will leave “holes” of free space in an otherwise-occupied physical block, the storage module will need to perform several “housekeeping” operations to create a free block, which can degrade system performance.
Additionally, in some environments, such as in mobile computing systems, when a file is fragmented by the storage module, the host does not know how fragmented the file is, so it does not know what action is needed to attempt to defragment the file. Further, while a host is aware of the host-fragmentation problem and can attempt to solve it by moving a scattered file to consecutive LBA ranges, such moving can actually degrade performance because of the storage fragmentation problem.